/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.evangelion.core.daoImpl;

import com.evangelion.core.bean.Proveedor;
import com.evangelion.core.bean.Seccione;
import com.evangelion.core.dao.ProveedorDao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.persistence.Query;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author Kellycasma
 */
@Component
@Transactional
public class ProveedorDaoImpl extends AbstractDAO implements ProveedorDao {

    @Override
    public List<Proveedor> searchByCifNombre(Seccione seccion, String valorParametro) {
        String sql = "SELECT p from Proveedor p WHERE 1=1 ";

        Map<String, Object> pMap = new HashMap<String, Object>();
        if (null != seccion) {
            sql += " AND p.seccion=:seccion";
            pMap.put("seccion", seccion);
        }

        if (StringUtils.isNotEmpty(valorParametro)) {
            sql += " AND (p.cif LIKE :valorParametro or p.nombres LIKE :valorParametro) ";
            pMap.put("valorParametro", "%" + valorParametro + "%");
        }

        Query q = em.createQuery(sql);
        applyParams(q, pMap);

        return q.getResultList();
    }

    @Override
    public void save(Proveedor proveedor) {
        super.save(proveedor);
    }

    @Override
    public Proveedor findObjByParam(String parametro, String valor) {
        return (Proveedor) findObjByParam(Proveedor.class, parametro, valor);
    }
}
